package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.ProductBean;
import com.project.bean.SellProductBean;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;


@Mapper
public interface IProductMapper {
    /**
     * 按供应商id添加商品
     * @param supplierId 供应商id
     * @param product 商品对象
     */
    public void addProduct(@Param("supplierId") int supplierId, @Param("product") ProductBean product);


    /**
     * 按id删除商品（修改供应商外键为0）
     * @param id
     */
    @Delete("delete from sys_product where pk_productId")
    public void delById(int id);

    /**
     * 按商品id入库商品
     * @param id 商品id
     * @param num 采购数量
     */
    public void buyProduct(@Param("id") int id,@Param("num") int num);

    /**
     * 按选项动态分页查询商品集合
     * @param name 商品名
     * @param type 类别
     * @param startNum 数量下限
     * @param endNum 数量上限
     * @return 分页对象
     */
    public List<ProductBean> findByItem(@Param("name") String name, @Param("type") String type, @Param("startNum") Integer startNum , @Param("endNum") Integer endNum);


    /**
     * 按id修改销售价格
     * @param id 商品id
     * @param price 新价格
     */
    public void update(int id,int price);

    /**
     * 查找商品是否符合数量
     * @param infoList 销售商品明细集合
     * @return 商品id数组
     */
    public int[] findByNum(List<SellProductBean> infoList);

    /**
     * 销售商品减少库存
     * 同时增加销售量
     * @param infoList 销售订单明细集合
     */
    public void sellProductList(List<SellProductBean> infoList);


    /**
     * 按选项分页查找商品销售
     * 并查询时间范围的销售数量
     * @param factory 厂商
     * @param startDate 起始时间
     * @param endDate 结束时间
     * @return 商品集合
     */
    public List<ProductBean> findSellProductByItem(@Param("factory") String factory,@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);


    /**
     * 按id查询
     * @param id
     */
    @Select("select * from sys_product where pk_productId=#{id}")
    @ResultMap("pMap")
    public ProductBean findById(int id);


    /**
     * 按照供货商id查找
     * @param supplierId    供货商id
     * @return  商品对象
     */
    public List<ProductBean> findBySupplierId(int supplierId);
}
